package com.cruise.game.service.agent;

import com.cruise.game.model.vo.common.PageResult;
import com.cruise.game.model.vo.order.OrderDetailVO;
import com.cruise.game.model.vo.order.OrderListVO;

import java.util.Map;

/**
 * 代理订单服务接口
 *
 * @author cruise
 * @date 2025-02-28
 */
public interface AgentOrderService {

    /**
     * 获取待接单列表
     *
     * @param userId 用户ID
     * @param page 页码
     * @param pageSize 每页条数
     * @return 订单列表
     */
    PageResult<OrderListVO> getPendingOrderList(Long userId, Integer page, Integer pageSize);

    /**
     * 获取代理订单列表
     *
     * @param userId 用户ID
     * @param status 订单状态
     * @param page 页码
     * @param pageSize 每页条数
     * @return 订单列表
     */
    PageResult<OrderListVO> getAgentOrderList(Long userId, String status, Integer page, Integer pageSize);

    /**
     * 获取订单详情
     *
     * @param userId 用户ID
     * @param orderId 订单ID
     * @return 订单详情
     */
    OrderDetailVO getOrderDetail(Long userId, Long orderId);

    /**
     * 接受订单
     *
     * @param userId 用户ID
     * @param orderId 订单ID
     * @return 是否成功
     */
    boolean acceptOrder(Long userId, Long orderId);

    /**
     * 开始服务
     *
     * @param userId 用户ID
     * @param orderId 订单ID
     * @return 是否成功
     */
    boolean startService(Long userId, Long orderId);

    /**
     * 完成订单
     *
     * @param userId 用户ID
     * @param orderId 订单ID
     * @param completionImageUrl 完成截图URL
     * @return 是否成功
     */
    boolean completeOrder(Long userId, Long orderId, String completionImageUrl);

    /**
     * 获取订单统计
     *
     * @param userId 用户ID
     * @return 统计信息
     */
    Map<String, Object> getOrderStatistics(Long userId);
}